为了在本地更好更方便的开发, 我集成了 PHP 8.2、Nginx、MySQL、MongoDB、Redis 和 RabbitMQ。这样团队成员增加时就不用花费大量时间配置环境, 结构合理目录清晰. https://github.com/warerwang/docker-php-env
本环境已安装以下 PHP 扩展:
| 服务 | 主机端口 | 容器端口 | 说明 | | -------- | -------- | -------- | ------------ | | PHP-FPM | 9000 | 9000 | PHP FastCGI | | Nginx | 80 | 80 | HTTP | | Nginx | 443 | 443 | HTTPS | | MySQL | 3306 | 3306 | MySQL 服务 | | MongoDB | 27017 | 27017 | MongoDB 服务 | | Redis | 6379 | 6379 | Redis 服务 | | RabbitMQ | 5672 | 5672 | AMQP 协议 | | RabbitMQ | 15672 | 15672 | 管理界面 |
rootlaravellaravellaravelmongomongoguestguestmake up
# 或
docker-compose up -d
make down
# 或
docker-compose down
make ps
# 或
docker-compose ps
make up # 启动所有服务
make down # 停止并移除所有容器
make start # 启动已存在的容器
make stop # 停止容器
make restart # 重启容器
make pause # 暂停容器
make unpause # 恢复暂停的容器
make ps # 查看容器状态
make clean # 清理未使用的镜像和容器
make help # 显示帮助信息
.
├── docker-compose.yml # Docker Compose 配置
├── Makefile # 快捷命令
├── php/ # PHP 配置
│ ├── Dockerfile # PHP 镜像构建文件
│ ├── php.ini # PHP 配置文件
│ ├── www.conf # PHP-FPM 配置
│ ├── main.properties # 应用配置文件
│ ├── conf.d/ # PHP 扩展配置
│ └── keys/ # 密钥文件目录
├── nginx/ # Nginx 配置
│ ├── conf.d/ # Nginx 站点配置
│ │ └── vhost/ # 虚拟主机配置
│ ├── ssl/ # SSL 证书
│ └── html/ # 静态文件
├── projects/ # 项目代码目录
│ └── default/ # 默认项目
├── logs/ # 日志目录
│ ├── php/ # PHP 日志
│ ├── nginx/ # Nginx 日志
│ ├── mysql/ # MySQL 日志
│ ├── mongo/ # MongoDB 日志
│ └── rabbitmq/ # RabbitMQ 日志
└── data/ # 数据持久化目录
├── mysql/ # MySQL 数据
├── mongo/ # MongoDB 数据
├── redis/ # Redis 数据
└── rabbitmq/ # RabbitMQ 数据
nginx/conf.d/vhost/ 目录下创建站点配置文件projects/ 目录docker-compose restart nginx
php/php.iniphp/www.confphp/conf.d/# PHP 日志
tail -f logs/php/error.log
# Nginx 日志
tail -f logs/nginx/access.log
tail -f logs/nginx/error.log
# MySQL 日志
tail -f logs/mysql/*.log
data/ 目录,删除容器不会丢失数据data/、logs/ 等目录下的数据文件提交到版本控制nginx/ssl/ 目录projects/ 目录下,每个子目录对应一个项目所有服务默认使用 UTC 时区,可在 docker-compose.yml 中修改 TZ 环境变量。
MIT
